Techniques such as “watermarking” have been known in the art for incorporating information signals into media signals or executable code. Typical watermarks may include encoded indications of authorship, content, lineage, existence of copyright, or the like. Alternatively, other information may be incorporated into audio signals, either concerning the signal itself, or unrelated to it. The information may be incorporated in an audio signal for various purposes, such as identification or as an address or command, whether or not related to the signal itself.
There is considerable interest in encoding audio signals with information to produce encoded audio signals having substantially the same perceptible characteristics as the original unencoded audio signals. Recent successful techniques exploit the psychoacoustic masking effect of the human auditory system whereby certain sounds are humanly imperceptible when received along with other sounds.
One particularly successful utilization of the psychoacoustic masking effect is described in U.S. Pat. No. 5,450,490 and U.S. Pat. No. 5,764,763 (Jensen et al.) in which information is represented by a multiple-frequency code signal which is incorporated into an audio signal based upon the masking ability of the audio signal. Additional examples include U.S. Pat. No. 6,871,180 (Neuhauser et al.) and U.S. Pat. No. 6,845,360 (Jensen et al.), where numerous messages represented by multiple frequency code signals are incorporated to produce and encoded audio signal. Each of the above-mentioned patents is incorporated by reference in its entirety herein. The encoded audio signal is suitable for broadcast transmission and reception as well as for recording and reproduction. When received, the audio signal is then processed to detect the presence of the multiple-frequency code signal. Sometimes, only a portion of the multiple-frequency code signal, e.g., a number of single frequency code components, inserted into the original audio signal, is detected in the received audio signal. However, if a sufficient quantity of code components is detected, the information signal itself may be recovered.
While media data encoding and watermarking has been known in the art, there continues to be great interest in additionally protecting the media data from “hackers” or “pirates.” One well-known technique for protecting data is encryption, which transforms information using a cipher algorithm to make it unreadable to anyone except those possessing a key. Another related technique for protecting data is referred to as “obfuscation,” where input data is encoded before it is sent to a hash function or other encryption scheme. One of the advantages of obfuscation is that it helps to make brute force attacks unfeasible, as it is difficult to determine the correct cleartext for decryption. Examples of obfuscation techniques may be found in Collberg et al., “A Taxonomy of Obfuscating Transformations,” Technical Report, Department of Computer Science, University of Auckland, No. 148 (July 1997), Collberg, Thomborson, “Watermarking, Tamper-Proofing, and Obfuscation—Tools for Software Protection,” University of Arizona Computer Science Technical Report, (Feb. 10, 200), and Sosonkin et al., “Obfuscation of Design Intent in Object-Oriented Applications,” Department of Computer and Information Science, Polytechnic University (2003), each of which is incorporated by reference in its entirety herein.
While the aforementioned techniques of encryption and obfuscation has served to protect data files themselves, there has been insufficient work in area of protecting media measurement data, as well as data encoded using psychoacoustic masking. Under the systems and methods described below, key components of numeric and/or pattern-based algorithms may be eliminated from software applications intended for untrusted computing environments. The disclosed configuration provides a high level of protection against reverse engineering because the software does not contain the actual software code implementation of the algorithm, but only the numeric results of the algorithm. Accordingly, attempts at reverse engineering the code would not yield the actual algorithm. This technique can be extended to include protection of higher-level functionality using a set of stored patterns, representing the required algorithm flow, executed by a generic pattern engine. Because the stored patterns are not part of the actual software code, they can not be disassembled. By using a generic pattern engine, reverse engineering may be frustrated further.